package com.bestdreamer.thread_safe.singleton_2;

import java.io.Serializable;

public class SerSingleton implements Serializable {

    String name;

    private SerSingleton(){
        // 创建单例的过程可能会比较慢
        System.out.println("Singleton is create");
        name = "SerSingleton";
    }

    private static SerSingleton instance = new SerSingleton();

    public static SerSingleton getInstance(){
        return instance;
    }

    public static void createString(){
        System.out.println("createString in Singleton");
    }

    /**
     * 阻止生成新的实例，总是返回当前对象    <br/>
     * 加上 readResolve() 函数后程序正常退出。说明，即便经过反序列化，仍然保持了单例的特征。事实上，在实现了私有的 readResolve() 方法后，
     * readObject() 已经形同虚设，它直接使用 readResolve() 替换了原本的返回值，从而在形式上构造了单例。
     */
    private Object readResolve(){
        System.out.println("readResolve method --");
        return instance;
    }
}
